CURSO SOBRE BIOHERRAMIENTAS EN BIOESTADISTICA Y BIOINFORMATICA
(1ªEdición)
Barcelona, 16, 17 y 18 de Mayo 2017
Cómo crear aplicaciones con Shiny
Parte I: Introducción
Shiny es un package de R para crear aplicaciones interactivas en base web.
Ha sido elaborado por los creadores de RStudio. (Joe Chen)
No requiere conocimientos de ningún lenguaje de programación de páginas web (HTML, JavaScript, PHP,…), sólo usa código R.
Con poco código se pueden crear aplicaciones muy flexibles y potentes.
És útil para hacer que tus funciones o paquetes lo utilicen usuarios no familiarizados con R y que prefieran “cliquear”.
Hacer que tus paquetes escritos originalmente en R sean mucho más “populares”.
En su página web hay ejemplos y un extenso manual.
Pasos
Se escribe la parte UI en un archivo llamado “ui.R” y la parte Server en un archivo llamado “server.R”. Ambos archivos se tienen que llamar así y tienen que estar en la misma carpeta.
Se carga el package shiny.
Se ejecuta la función runApp().
Alternativa
Guardar el código de la parte UI y el de la parte Server en dos objetos (ui y server) y llamar a la función runApp(list(ui, server)) ó la función shinyApp(ui, server)
Requisitos:
Hay que tener instalado R y Shiny y los packages necesarios actualizados en el PC ó Mac.
EN UN SERVIDOR PROPIO
Ventajas
Requisitos
EN EL SERVIDOR DE SHINY
Ventajas
shinyapps y registrarse en www.shinyapps.io/.Inconvenientes
Paquetes disponibles en CRAN para mejorar el aspecto y funcionalidad de la aplicación.
Los que usaremos en el curso son:
shinyBS
¿Cómo funciona?
Caso práctico
INPUTS
file: Fichero (fileInput).
datatype: Tipo de datos (radioButtons).
Si los datos son de tipo texto:
header: ¿Contiene cabecera? (checkboxInput).sep: Caracter spearador de columnas (radioButtons).dechar: Tipo de datos (radioButtons).OUTPUTS
summary: Descriptivas de las variables (verbatimTextOutput).
dataTable: Muestra la tabla de datos (dataTableOutput).
fluidPage(
titlePanel("Lectura datos"),
sidebarLayout(
sidebarPanel(
fileInput("file", ""),
radioButtons("datatype", "Data format", c("SPSS"=1, "TEXT"=2),1),
conditionalPanel(
condition="input.datatype==2",
wellPanel(
h5("TEXT Options:"),
checkboxInput("header", "Has column headers", TRUE),
radioButtons("sep", "Column Separator", c(Comma=",", Semicolon=";", Tab="\t")),
radioButtons("dechar", "Decimal character", c(Comma=",", Dot="."), "Dot")
)
)
),
mainPanel(
tabsetPanel(type = "tabs",
tabPanel("Summary", verbatimTextOutput("summary")),
tabPanel("Table", dataTableOutput("dataTable"))
)
)
)
)
function(input, output) {
dataset<-reactive({
inFile<-input$file
if (input$datatype==2){
dataset<- read.table(inFile$datapath,header=input$header,
sep=input$sep,quote=input$quote,dec=input$dechar)
} else {
dataset<-spss.get(inFile$datapath)
}
return(dataset)
})
output$dataTable <- renderDataTable({
dataset()
})
output$summary <- renderPrint({
summary(dataset())
})
}